/* -*-c++-*- */
/* osgGIS - GIS Library for OpenSceneGraph
 * Copyright 2007-2008 Glenn Waldron and Pelican Ventures, Inc.
 * http://osggis.org
 *
 * osgGIS is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 */

#ifndef _OSGGIS_IMAGE_UTILS_H_
#define _OSGGIS_IMAGE_UTILS_H_ 1

#include <osgGIS/Common>
#include <osg/Image>

namespace osgGIS
{    
    /* (internal)
     */
    struct OSGGIS_EXPORT ImageUtils
    {
        static osg::Image* convertRGBAtoDDS( 
            osg::Image* in_rgba );

        static osg::Image* resizeImage(
            osg::Image* source,
            unsigned int new_width,
            unsigned int new_height );

        static bool copyAsSubImage( osg::Image* source, osg::Image* dest, int dest_col, int dest_row );

        static bool hasAlpha( osg::Image* image );
            
        static unsigned long roundUpToPowerOf2( 
            unsigned long n,
            unsigned long cap =0 );
        
        static unsigned long roundToNearestPowerOf2( 
            unsigned long n );

        static osg::Image* getFirstImage(
            osg::StateSet* state_set );
        
        static void setFirstImage( 
            osg::StateSet* ss, osg::Image* image );
    };    
}

#endif // _OSGGIS_IMAGE_UTILS_H_
